如果
GORM (Grails Object Relational Mapping)没有你想象的那么足够灵活,作为选择,你可以使用Hibernate映射你的domain类.
要做到这点,需要在你项目的grails-app/conf/hibernate
目录创建一个hibernate.cfg.xml
文件并为你的domain类对应HBM映射文件
.
更多关于这方面的信息,请查看Hibernate站点的文件映射
这允许你映射Grails domain类适用于更广的遗留系统并更加灵活的创建数据库模式
.
Grails也允许你在Java中编写domain类或重用以存在的domain model,这些都通过使用Hibernate来映射
. 你需要做的是放置必须的hibernate.cfg.xml
文件和对应的映射文件在grails-app/conf/hibernate
目录中
.
另外,令人兴奋的是你仍然可以调用GORM中所有动态之久和查询方法
!
Grails 也支持通过Hibernate的Java 5.0注解支持来创建domain类映射. 为了做到这点,你需要通过设置DataSource
中的configClass
属性告诉Grails你要使用注解配置,如下
:
import org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsAnnotationConfiguration
dataSource {
configClass = GrailsAnnotationConfiguration.class
… // remaining properties
}
这就是它的配置!确保你安装了Java 5.0,因为这需要使用注解. 现在,为了创建一个注解类,我们在src/java
中简单的创建一个新的Java类并使用EJB 3.0规范来定义注解(详情
参考Hibernate Annotations Docs):
package com.books;
@Entity
public class Book {
private Long id;
private String title;
private String description;
private Date date; @Id
@GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
一旦完成,你需要使用Hibernate sessionFactory
注册这个类 ,为了做到这点,你需要添加 如下的grails-app/conf/hibernate/hibernate.cfg.xml
文件:
<!DOCTYPE hibernate-configuration SYSTEM
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<mapping package="com.books" />
<mapping class="com.books.Book" />
</session-factory>
</hibernate-configuration>
当Grails加载时,会注册这个类必要的动态方法
. 查看Scaffolding了解
Hibernate domain 类中可以做的其他事情.
Grails提交者, Jason Rudolph,花了许多时间写了许多关于通过自定义Hibernate使用Grails: